public class SortedArrayToBST {
    // leetcode 将有序数数组转换为二叉搜索树
    // https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/?envType=study-plan-v2&envId=top-100-liked
    public TreeNode sortedArrayToBST(int[] nums) {
        return sortedArrayToBSTChild(nums, 0, nums.length-1);
    }

    private TreeNode sortedArrayToBSTChild(int[] nums, int left, int right) {
        if (left > right) return null;
        int mid = left + (right - left) / 2;
        TreeNode root = new TreeNode(nums[mid]);
        root.left = sortedArrayToBSTChild(nums,left, mid-1);
        root.right = sortedArrayToBSTChild(nums, mid+1, right);
        return root;
    }
}
